package cn.tedu.person.security;

import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.ToString;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.userdetails.User;

import java.util.Collection;

@Getter
@ToString(callSuper = true)
@EqualsAndHashCode(callSuper = true)
/*
@Data 已经有@Getter，@Setter，@toString，@RequiredArgsConstructor 和@EqualsAndHashCode了，为什么还要再写个@EqualsAndHashCode？
在派生类里用@Data 可能会有问题，@EqualsAndHashCode默认是false，那么在做equals()的时候就不会比较父类的属性，
因此可能出现明明不等的两个对象equals之后返回true了。所以为了能够正确的比较，将callSuper改为true，意思是带上父类的属性一起比较。
 */
public class AdminDetails extends User {

    private Long id;

    public AdminDetails(Long id,String username,
                        String password, boolean enabled,
                        Collection<? extends GrantedAuthority> authorities) {
        super(username, password, enabled,
                true,true,true, authorities);
        this.id=id;
    }
}
